//////////////////////////////////////////////////////////////////////////
#pragma once


//////////////////////////////////////////////////////////////////////////
#include <RocketLua/RocketLua.hpp>


namespace Rocket
{
	namespace Core
	{
		namespace Lua
		{
			class LuaElement
			{
			public:
				//
				static std::string	Id( const Rocket::Core::Element* el );
				static void			Id( Rocket::Core::Element* el, const std::string& s );
				static int			GetAttribute( lua_State* L, Rocket::Core::Element* el );
				static int			HasAttribute( lua_State* L, Rocket::Core::Element* el );
				static int			RemoveAttribute( lua_State* L, Rocket::Core::Element* el );
				static int			SetProperty( lua_State* L, Rocket::Core::Element* el );
				static int			SetInnerRml( lua_State* L, Rocket::Core::Element* el );

				// TODO: Consider how to deal with rocket string.
				// ***	Option 1:	Hack LuaBridge to support a generic wrapper function.  <DONE>
				//	Option 2:	Try to manually hook in the wrappers after luabridge is done.
				//	Option 3:	Get annoyed with these wrappers and piss and moan.. :)
				static void			Register( lua_State* state );
			};
		}
	}
}
